Transición desde Modo estricto de PyTorch a Triton requiere un cambio de perspectiva: en lugar de ver tensores como objetos monolíticos, hay que verlos como colecciones de bloques discretos y manejables bloques o ladrillos.
1. Tensores de PyTorch frente a Triton
Es fundamental distinguir tensores de Triton de tensores de PyTorch. Un tensor de PyTorch es un objeto Python del lado del host que encapsula forma, tipo de datos, dispositivo, desplazamientos y metadatos de almacenamiento. En contraste, Triton trabaja con los punteros de datos sin procesar dentro de bloques de memoria específicos, lo que permite una optimización de nivel mucho más bajo.
2. El cuello de botella del modo estricto
En la ejecución estándar estricta, cada operación (por ejemplo, suma seguida de ReLU) requiere un lanzamiento independiente del kernel y un viaje de ida y vuelta a la memoria global. Este es el cuello de botella principal en la computación moderna con GPU. Triton supera esto mediante fusionar operaciones dentro de un solo kernel que procesa bloques de datos (por ejemplo, 128, 256 o 512 elementos) directamente en la memoria integrada.
3. El paradigma basado en bloques
En lugar del pensamiento a nivel escalar de los hilos de CUDA, Triton utiliza SPMD (Programa único, múltiples datos) a nivel de bloque. Escribes un solo kernel, y Triton lanza múltiples instancias a través de una cuadrícula. Cada instancia usa su program_id para calcular qué "trozo" de memoria posee.
4. Configuración del entorno
Para comenzar, instala Triton en un entorno limpio (usando Conda o venv) para asegurar que no haya conflictos de dependencias con las herramientas CUDA existentes: pip install triton.